package com.hsgene.coupon.dto;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.hsgene.common.util.date.TimeJsonDeserializer;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 用户领取的优惠券
 *
 * @author wangbing
 * @version 1.0, 2018/10/11
 */
public class GeneticUserDiscountDto implements Serializable {

    /**
     * 逻辑主键
     */
    private String id;

    /**
     * 用户id
     */
    private String userId;

    /**
     * 优惠券模板id
     */
    private String geneticDiscountId;

    /**
     * 用户领券后持有的优惠券状态(1-未使用未过期  2-已经过期[这个状态通过截止日期判断]  3-已经使用)
     */
    private Integer userDiscountStatus;

    /**
     * 截止日期
     */
    @JsonDeserialize(using = TimeJsonDeserializer.class)
    private Date deadlineDateTime;

    /**
     * 业务数据逻辑删除 0-代表未删除   1-代表删除
     */
    private Integer deleteFlag;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 满足条件金额
     */
    private BigDecimal conditionPrice;

    /**
     * 优惠的金额
     */
    private BigDecimal discountPrice;

    /**
     * 开始时间
     */
    @JsonDeserialize(using = TimeJsonDeserializer.class)
    private Date beginDateTime;

    /**
     * 结束时间
     */
    @JsonDeserialize(using = TimeJsonDeserializer.class)
    private Date endDateTime;

    /**
     * 类型(1-满减类型)
     */
    private Integer type;

    /**
     * 使用目标（1-全平台商品）
     */
    private Integer useTarget;

    /**
     * 是否默认加载(0-否，1-是)
     */
    private Integer isDefault;

    /**
     * 适用范围[优惠券描述]
     */
    private String description;

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getGeneticDiscountId() {
        return geneticDiscountId;
    }

    public void setGeneticDiscountId(String geneticDiscountId) {
        this.geneticDiscountId = geneticDiscountId;
    }

    public Integer getUserDiscountStatus() {
        return userDiscountStatus;
    }

    public void setUserDiscountStatus(Integer userDiscountStatus) {
        this.userDiscountStatus = userDiscountStatus;
    }

    public Date getDeadlineDateTime() {
        return deadlineDateTime;
    }

    public void setDeadlineDateTime(Date deadlineDateTime) {
        this.deadlineDateTime = deadlineDateTime;
    }

    public Integer getDeleteFlag() {
        return deleteFlag;
    }

    public void setDeleteFlag(Integer deleteFlag) {
        this.deleteFlag = deleteFlag;
    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    public BigDecimal getConditionPrice() {
        return conditionPrice;
    }

    public void setConditionPrice(BigDecimal conditionPrice) {
        this.conditionPrice = conditionPrice;
    }

    public BigDecimal getDiscountPrice() {
        return discountPrice;
    }

    public void setDiscountPrice(BigDecimal discountPrice) {
        this.discountPrice = discountPrice;
    }

    public Date getBeginDateTime() {
        return beginDateTime;
    }

    public void setBeginDateTime(Date beginDateTime) {
        this.beginDateTime = beginDateTime;
    }

    public Date getEndDateTime() {
        return endDateTime;
    }

    public void setEndDateTime(Date endDateTime) {
        this.endDateTime = endDateTime;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getUseTarget() {
        return useTarget;
    }

    public void setUseTarget(Integer useTarget) {
        this.useTarget = useTarget;
    }

    public Integer getIsDefault() {
        return isDefault;
    }

    public void setIsDefault(Integer isDefault) {
        this.isDefault = isDefault;
    }
}
